home *** CD-ROM | disk | FTP | other *** search
- /* Trivial XCMD to test out HyperXCmd_LSC.h
-
- Nigel Perry (np@doc,ic.ac.uk), October 1990
- */
-
- #include "HyperXCmd_LSC.h"
-
- /* from LSC 2.01 supplement */
- #define SetUpA4() asm \
- { move.l a4,-(sp) \
- move.l a0,a4 \
- }
- #define RestoreA4() asm { move.l (sp)+,a4 }
-
- #define NIL (void *)0
- #define EMPTY ((StringPtr)0xA02) /* low memory global OneOne */
- /* used for "\p" */
- #define cEMPTY ((char *)0xA02) /* low memory global OneOne */
- /* used for "" */
-
- pascal void main(paramPtr) register XCmdPtr paramPtr;
- { Point pt;
- Rect rect;
- Str255 ans;
- StringPtr inp;
- WindowPtr wp;
- XWEventInfoPtr xp;
- GrafPtr gp;
-
- SetUpA4();
-
- if(paramPtr->paramCount == -1)
- { xp = (XWEventInfoPtr)(paramPtr->params[0]);
- wp = xp->eventWindow;
- switch(xp->event.what)
- { case updateEvt:
- BeginUpdate(wp);
- EndUpdate(wp);
- break;
- case xCursorWithin:
- InitCursor();
- break;
- case xHidePalettesEvt:
- ShowHide(wp, false);
- break;
- case xShowPalettesEvt:
- ShowHide(wp, true);
- break;
- case mouseDown:
- switch( FindWindow(xp->event.where, &wp) )
- { case inContent:
- /* jump windoid to mouse click! */
- MoveWindow(wp, xp->event.where.h, xp->event.where.v, false);
- break;
- case inGoAway:
- if( TrackGoAway(wp, xp->event.where) )
- CloseXWindow(paramPtr, wp);
- break;
- case inDrag:
- /* have some fun… */
- rect = wp->portRect;
- GetPort(&gp);
- SetPort(wp);
- LocalToGlobal(&rect.top);
- LocalToGlobal(&rect.bottom);
- SetPort(gp);
- InsetRect(&rect, -72, -72);
- DragWindow(wp, xp->event.where, &rect);
- break;
- default:
- paramPtr->passFlag = true;
- }
- break;
- default:
- paramPtr->passFlag = true;
- break;
- }
-
- if(paramPtr->passFlag)
- { NumToStr(paramPtr, xp->event.what, ans);
- ParamText(ans, EMPTY, EMPTY, EMPTY);
- ShowHCAlert(paramPtr, errorDlgID, "\pEvent: ^0");
- }
- }
- else
- { switch( ShowHCAlert(paramPtr, yesNoCancelDlgID, "\pFlash Palettes?") )
- { case 1:
- HideHCPalettes(paramPtr);
- ShowHCPalettes(paramPtr);
- HideHCPalettes(paramPtr);
- ShowHCPalettes(paramPtr);
- break;
- case 2:
- SendHCMessage(paramPtr, "\pput Cancelled");
- break;
- case 3:
- BeginXSound(paramPtr, NIL);
- SysBeep(1);
- SendHCMessage(paramPtr, "\pput \"Spoil\"");
- SysBeep(1);
- SendHCMessage(paramPtr, "\pput \" Sport!\" after msg");
- SysBeep(1);
- EndXSound(paramPtr);
- break;
- default:
- SendHCMessage(paramPtr, "\pput \"Unexpected return value.\"");
- break;
- }
-
- /* test new conversions */
- inp = (StringPtr)"\p1,2,3,4";
- StrToRect(paramPtr, inp, &rect);
- RectToStr(paramPtr, &rect, ans);
- ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
- ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
-
- inp = (StringPtr)"\p7,8";
- StrToPoint(paramPtr, inp, &pt);
- PointToStr(paramPtr, &pt, ans);
- ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
- ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
-
- inp = (StringPtr)"\p30, 30, 100, 0100";
- StrToRect(paramPtr, inp, &rect);
- RectToStr(paramPtr, &rect, ans);
- ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
- ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
-
- inp = (StringPtr)"\p 7, 008 ";
- StrToPoint(paramPtr, inp, &pt);
- PointToStr(paramPtr, &pt, ans);
- ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
- ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
-
- /* now lets try for a windoid */
-
- wp = NewXWindow(paramPtr, &rect, "\pA Windoid", true, palNoGrowProc, false, true);
- NumToHex(paramPtr, (long)wp, 6, ans);
- ParamText(ans, EMPTY, EMPTY, EMPTY);
- ShowHCAlert(paramPtr, errorDlgID, "\pWindow Ptr = 0x^0");
- }
-
- RestoreA4();
- }